package pe.edu.upc.dew.Grupo1.dao;

import java.util.List;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;

import pe.edu.upc.dew.Grupo1.model.Sala;

public class SalaDaoJdbc extends SimpleJdbcDaoSupport implements SalaDao{

	public void insert(Sala sala) {
		getSimpleJdbcTemplate().update("insert into `sala`(CodigoSala,Nombre,Descripcion,NumeroAsientos,CodigoLocal) values(?,?,?,?,?)",
				sala.getCodigoSala(),sala.getNombre(),sala.getDescripcion(),
				sala.getNumeroAsientos(),sala.getLocal().getCodigoLocal());
	}

	public int getNroTicketsVendidosSala(int codigo){
		return getSimpleJdbcTemplate().queryForInt("SELECT SUM(cantidad) AS Total FROM Venta AS V INNER JOIN Funcion AS F ON V.CodigoFuncion = F.CodigoFuncion WHERE F.CodigoSala= ?",codigo);
	}
	
	public Sala getSalaPorCodigo(int codigo) {
		return getSimpleJdbcTemplate().
		queryForObject("select CodigoSala,Nombre,Descripcion,NumeroAsientos,CodigoLocal from `sala` where CodigoSala = ?", 
				new SalaRowMapper(), codigo);
	}
 
	public void deleteSalaPorCodigo(int codigo) {
		getSimpleJdbcTemplate().update("delete from sala where CodigoSala=?",codigo);
	}

	public void updatePorCodigo(Sala sala) {
		getSimpleJdbcTemplate().
		update("update `sala` set Nombre=?,Descripcion=?,NumeroAsientos=?,CodigoLocal=? where CodigoSala=?", 
				sala.getNombre(),sala.getDescripcion(),
				sala.getNumeroAsientos(),sala.getLocal().getCodigoLocal(),sala.getCodigoSala());
	}

	public List<Sala> getSalasPorCodigoLocalDescripcion(int codigoLocal,String descripcion) {
		return getSimpleJdbcTemplate().
		query("select CodigoSala,Nombre,Descripcion,NumeroAsientos,CodigoLocal from `sala` where CodigoLocal=? AND Descripcion like CONCAT('%',?)", 
		new SalaRowMapper(),codigoLocal,descripcion);
	}
	
	public List<Sala> getSalasPorDescripcion(String descripcion) {
		return getSimpleJdbcTemplate().
		query("select CodigoSala,Nombre,Descripcion,NumeroAsientos,CodigoLocal from `sala` where Descripcion like CONCAT('%',?)", 
				new SalaRowMapper(),descripcion);
	}

	public int getConteoSalas() {
		return getSimpleJdbcTemplate().queryForInt("select count(*) from `sala`");
	}
}